import java.util.*;

public class Topic1 {

/***需求**

    目前有100名囚犯，每个囚犯的编号是1-200之间的随机数。现在要求依次随机生成100名囚犯的编号（要求这些囚犯的编号是不能重复的）
    然后让他们依次站成一排。(注：位置是从1开始计数的)，
    接下来，国王命令手下先干掉全部奇数位置处的人。
    剩下的人，又从新按位置1开始，再次干掉全部奇数位置处的人，
    依此类推，直到最后剩下一个人为止，剩下的这个人为幸存者。

            **具体功能点的要求如下：**

    请输出幸存者的编号，以及他第一次所占的位置值是多少。*/

    public static void main(String[] args) {
        ArrayList<Integer> Convict = new ArrayList<>();//存放所有罪犯编号
        Random sc = new Random();
        //生成随机编号（不重复）并存入Convict数组。
        while (Convict.size()<100){
            int Numbers = sc.nextInt(199)+1;
            if (Check(Numbers,Convict)){
                Convict.add(Numbers);
            }
        }
        System.out.println(Convict);
        //干掉位置为奇数的囚犯

        while (Convict.size() >=2) {
            Iterator iterator = Convict.iterator();
            int b = Convict.size();
            for (int i = 0; i < b; i++) {
                iterator.next();
                if (i%2 == 0){
                    iterator.remove();
                }

            }
        }

        System.out.println(Convict);
        }
        //判断编号是否重复
       public static boolean Check (int number,ArrayList<Integer> convict){
            boolean resut = true;
           for (int i = 0; i < convict.size(); i++) {
               if (number == convict.get(i)){
                   resut = false;
               }
           }
           return resut;
       }
    }

